/**
 * @file EnhancedAgent.h
 * @brief Defines the enhanced autonomous agent framework for economic simulation
 * @copyright 2023 Economic Simulator Team
 * @license MIT
 */

#pragma once
#include <vector>
#include <map>
#include <memory>
#include "CommonTypes.h"

/**
 * @class EnhancedAgent
 * @brief Autonomous economic agent with learning and adaptation capabilities
 */
class EnhancedAgent {
private:
    // Core properties
    int id;
    AgentType type;
    AgentState currentState;
    
    // Cognitive attributes
    double knowledge;
    double socialCapital; 
    double adaptability;
    
    // Data containers
    std::vector<Memory> memories;
    std::vector<AgentGoal> goals;
    std::vector<std::string> currentWorkflow;

    // Private methods
    void updateGoals();
    void evaluateOptions();
    void selectBestAction();

public:
    /**
     * @brief Construct a new agent instance
     */
    EnhancedAgent(int id, AgentType type);
    
    /**
     * @brief Execute decision cycle
     */
    void makeDecision(const MarketConditions& market);
    
    /**
     * @brief Update knowledge from experience
     */
    void learnFromExperience();
    
    // [Other public methods...]
};